package 代码记录.指定公司代码练习记录.华为_2024.分值100;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

/**
 * @author zx
 * @create 2024-02-02 20:09
 */
public class 积分奖励_32 {
    /**
     * 人家的代码，没看懂
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int t = sc.nextInt();
        List<Integer>[] list = new ArrayList[t + 1];
        for (int i = 0; i < t + 1; i++) {
            list[i] = new ArrayList<>();
        }
        // 读<截止时间, 积分>的数对
        for (int i = 0; i < n; i++) {
            int endTime = sc.nextInt();
            int value = sc.nextInt();
            // 维护 截止时间 -> 积分s 的一对多关系
            list[Math.min(endTime, t)].add(value);
        }
        int res = calculateMaxScore(list, t);
        System.out.println(res);
    }

    private static int calculateMaxScore(List<Integer>[] list, int t) {
        int res = 0;
        List<Integer> waitList = new ArrayList<>();

        // 倒贪心
        for (int i = t; i > 0; i--) {
            // 我们考虑时间戳t时，考虑的是[t-1,t]这个区间的任务执行
            waitList.addAll(list[i]);

            // 取出优先队列中最大的一个，也可以排序，可以优化的点！
            if (!waitList.isEmpty()) {
                // 使用 Collections.max 获取最大值
                int max = Collections.max(waitList);
                res= max;
                waitList.remove(Integer.valueOf(max));
            }
        }
        return res;
    }
}
